#include "widget.h"
#include "ui_widget.h"
#include<QSqlDatabase>
#include<QDebug>
#include<QSqlError>
#include<QMessageBox>
#include<QSqlQuery>//执行SQL语句的类
#include<QVariantList>
#include<QSqlRecord>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //添加QMYSQL数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//此时默认连接名 ,"connect_1"
    db.setHostName("localhost");//数据库用户名
    db.setUserName("root");
    db.setPassword("258369");//密码
    db.setDatabaseName("test");//使用哪个数据库，非代码创建

    //打开数据库
    if(!db.open())//数据库打开失败
    {
       QMessageBox::warning(this,"错误",db.lastError().text());
       return;
    }

    model = new QSqlTableModel(this);
    model->setTable("fan");//指定使用哪个表

    //吧model放到view
    ui->tableView->setModel(model);
    //显示model里的数据
    model->select();

    //改表头 比如id改成学号
    model->setHeaderData(0,Qt::Horizontal,"学号");
    //设置编辑模式
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);//设置手动提交修改，避免直接在可视表里改了数据

    //设置之后不能在tableView里直接修改
    //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_buttonAdd_clicked()
{
   //添加空记录
    QSqlRecord record = model->record();//获取空记录
    //获取行号
    int row = model->rowCount();
    model->insertRecord(row,record);
}

void Widget::on_buttonSure_clicked()
{
    model->submitAll();//提交
}

void Widget::on_buttonCancel_clicked()
{
    model->revertAll();//取消
    model->submitAll();
}

void Widget::on_buttonDel_clicked()
{
    //获取选中的模型
   QItemSelectionModel *sModel = ui->tableView->selectionModel();
   //取出模型里的索引
   QModelIndexList list = sModel->selectedRows();
   //删除所有选中的行
   for(int i = 0; i <list.size(); i++)
   {
       model->removeRow(list.at(i).row());
   }
}

void Widget::on_buttonFind_clicked()
{
    QString name = ui->lineEdit->text();
    QString str = QString("name = %1").arg(name);

    model->setFilter(str);
    model->select();
}
